/*
 * SoftwareSAR - 1.0
 */
package br.com.cpqd.ssar.importadores;

import br.com.cpqd.ssar.utilitarias.Geometria;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.filechooser.FileFilter;

/**
 * Classe que Controla os Importadores
 * @author Rafael Buck
 * @version 1.0
 */
public class ControladorImportadores implements RequisicoesImportadores {

    /**
     * Solicita a importação de uma geometria no formato DXF
     * @return Geometria
     */
    public Geometria[] importarDXF() {
        return null;
    }

    /**
     * Retorna o filtro do Arquivo DXF.
     * @return FileFilter
     */
    public FileFilter getFileFilter_DXF() {

        FileFilter filtro = null;
        // cria o filtro associado ao tipo de arquivo STL
        filtro = new FileFilter() {

            public boolean accept(File f) {
                String fileName = f.getName().toLowerCase();
                return (fileName.endsWith(".dxf") || f.isDirectory());
            }

            public String getDescription() {
                return "AutoDesk Drawing Interchange (*.dxf)";
            }
        };
        return filtro;
    }

    /**
     * Solicita a importação de geometrias no formato STL
     * @return lista de Geometrias
     */
    public Geometria importarSTL(int id) {

        ImportadorSTL importadorSTL = new ImportadorSTL();
        
        // Procura um Caminho no Computador
        JFileChooser jFileChooser = new JFileChooser();
        // Habilita para Obter apenas Diretorios
        jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        // Seta Filtro
        jFileChooser.setFileFilter(this.getFileFilter_STL());
        // Muda o título da Janela do File Chooser
        jFileChooser.setDialogTitle("Localizar Arquivo");
        // Lê a Opção do Usuário
        int option = jFileChooser.showOpenDialog(new JFrame());
        // Teste de Seleção do Usuário
        if (option == JFileChooser.APPROVE_OPTION) {
            String caminho = jFileChooser.getSelectedFile().toString();
            
            if (importadorSTL.carregarGeometria(caminho,id)== null){
                System.out.println("erro");                
            }else{
                return importadorSTL.carregarGeometria(caminho,id);
            }         
               
            
        } else if (option == JFileChooser.CANCEL_OPTION) {
            return null;
        }
        return null;
    }

    /**
     * Solicita a importação de geometrias no formato STL
     * @return lista de Geometrias
     */
    public Geometria importarSTL(String arquivo, int id) {
        ImportadorSTL importadorSTL = new ImportadorSTL();
        return importadorSTL.carregarGeometria(arquivo, id);
    }
    
    /**
     * Retorna o filtro do Arquivo STL.
     * @return FileFilter
     */
    public FileFilter getFileFilter_STL() {

        FileFilter filtro = null;
        // cria o filtro associado ao tipo de arquivo STL
        filtro = new FileFilter() {

            public boolean accept(File f) {
                String fileName = f.getName().toLowerCase();
                return (fileName.endsWith(".stl") || f.isDirectory());
            }

            public String getDescription() {
                return "Standart Tessellation Language (*.stl)";
            }
        };
        return filtro;
    }
}
